﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using UnityEngine;
using XLua;

public static class CustomExport
{
    //dotween的扩展方法在lua中调用
    [LuaCallCSharp]
    public static List<Type> dotween_lua_call_cs_list = new List<Type>()
    {
        typeof(DG.Tweening.AutoPlay),
        typeof(DG.Tweening.AxisConstraint),
        typeof(DG.Tweening.Ease),
        typeof(DG.Tweening.LogBehaviour),
        typeof(DG.Tweening.LoopType),
        typeof(DG.Tweening.PathMode),
        typeof(DG.Tweening.PathType),
        typeof(DG.Tweening.RotateMode),
        typeof(DG.Tweening.ScrambleMode),
        typeof(DG.Tweening.TweenType),
        typeof(DG.Tweening.UpdateType),

        typeof(DG.Tweening.DOTween),
        typeof(DG.Tweening.DOVirtual),
        typeof(DG.Tweening.EaseFactory),
        typeof(DG.Tweening.Tweener),
        typeof(DG.Tweening.Tween),
        typeof(DG.Tweening.Sequence),
        typeof(DG.Tweening.TweenParams),

        //typeof(DG.Tweening.DOTweenAnimation),
        //typeof(DG.Tweening.DOTweenPath),
        //typeof(DG.Tweening.DOTweenVisualManager),
        typeof(DG.Tweening.Core.ABSSequentiable),

        //typeof(DG.Tweening.Core.TweenerCore<Vector3, Vector3,
        //    DG.Tweening.Plugins.Options.VectorOptions>).SetWrapName("TweenerCoreV3V3VO").SetLibName("TweenerCoreV3V3VO")
        typeof(DG.Tweening.Core.TweenerCore<Vector3, Vector3, DG.Tweening.Plugins.Options.VectorOptions>),
        //new 
        typeof(DG.Tweening.TweenCallback),
        typeof(DG.Tweening.TweenExtensions),
        typeof(DG.Tweening.TweenSettingsExtensions),
        typeof(DG.Tweening.ShortcutExtensions),
        typeof(DG.Tweening.ShortcutExtensions43),
        typeof(DG.Tweening.ShortcutExtensions46),
        typeof(DG.Tweening.ShortcutExtensions50),
    };

    // dotween 在lua中使用
    //[LuaCallCSharp]
    //public static List<Type> LuaCallCSharp
    //{
    //    get
    //    {
    //        var luaTypeWrap = new List<Type>();
    //        var assem = Assembly.Load("DOTween");
    //        var types = assem.GetExportedTypes();
    //        luaTypeWrap.AddRange(types);
    //        return luaTypeWrap;
    //    }
    //}
}
